#ifndef GAMEELEMENT_H
#define GAMEELEMENT_H

#include "includes.h"
#include "RigidBody.h"
#include "Character.h"

enum GAME_ELEMENT_TYPE {DOOR=0,ENEMY=1,SPIKES=2,LADDER=3,SWITCH=4,NO_TYPE=5};

class GameElement:public RigidBody
{
protected:
    GAME_ELEMENT_TYPE type;
    bool activated;
public:
    GameElement()
    :RigidBody(1.0,AABB(vector3<float>(0,0,0),vector3<float>(1.0,1.0,1.0)),false,true),
     type(NO_TYPE),activated(false){}
    GAME_ELEMENT_TYPE getType(){return type;}
    virtual const char* getName(){return "None";}
    virtual void invokeCollisionEvent(Character*)=0;
    virtual void invokeUpdateEvent(Character*)=0;
    virtual void invokeActivateEvent()=0;
    virtual void activate()=0;
    virtual void deactivate()=0;
    virtual void render()=0;
    virtual void editorModeRender()=0;

};

#endif // GAMEELEMENT_H
